#ifndef __T_PID_H
#define __T_PID_H

typedef struct
{
	float target;		//目标值
	float current;		//当前值
	float kp;			//p
	float ki;			//i
	float kd;			//d
	float dt;			//采样时间间隔
	float e;			//目标值与当前值的差
	float last_e;		//上次的差
	float p_out;		//P项的输出结果
	float i_out;		//I项的输出结果
	float i_limit;		//积分限幅
	float i_band;		//积分分离
	float d_out;		//D项的输出
	float OUT;			//总输出
	float OUT_limit;	//总输出限幅
} PID_t;


void PIDInit(PID_t* pid,float dt,float I_limit,float I_band,float out_limit);
void PIDConfig(PID_t* pid,float p,float i,float d);
void PIDSetTarget(PID_t* pid,float target);

void PID_Calc(PID_t* pid);

float yaw_calc_plus(float num1,float num2);
void PID_Calc_yaw(PID_t* pid);

#endif